package com.reactim.user.service.impl;

import com.reactim.user.controller.FriendController.FriendStatus;
import com.reactim.user.dto.UserResponse;
import com.reactim.user.service.FriendService;
import com.reactim.user.service.UserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Mono;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

/**
 * 好友服务实现
 * 简化实现，实际项目中需要数据库支持
 */
@Slf4j
@Service
@RequiredArgsConstructor
public class FriendServiceImpl implements FriendService {

    private final UserService userService;

    @Override
    public Mono<List<UserResponse>> getFriendList(String username) {
        // 简化实现：返回空列表
        // 实际实现需要查询数据库中的好友关系
        log.debug("获取好友列表: {}", username);
        return Mono.just(new ArrayList<>());
    }

    @Override
    public Mono<List<UserResponse>> searchFriends(String keyword) {
        // 简化实现：通过用户名搜索用户
        log.debug("搜索好友: {}", keyword);
        return userService.searchUsers(keyword);
    }

    @Override
    public Mono<FriendStatus> getFriendStatus(Long userId) {
        // 简化实现：返回模拟状态
        log.debug("获取好友状态: {}", userId);
        FriendStatus status = new FriendStatus();
        status.setOnline(true); // 模拟在线状态
        status.setLastActiveTime(LocalDateTime.now());
        return Mono.just(status);
    }

    @Override
    public Mono<Boolean> addFriend(String username, Long friendUserId) {
        // 简化实现：直接返回成功
        // 实际实现需要在数据库中创建好友关系
        log.info("添加好友: {} -> {}", username, friendUserId);
        return Mono.just(true);
    }

    @Override
    public Mono<Boolean> removeFriend(String username, Long friendUserId) {
        // 简化实现：直接返回成功
        // 实际实现需要从数据库中删除好友关系
        log.info("删除好友: {} -> {}", username, friendUserId);
        return Mono.just(true);
    }
}